c语言实战 逆序一个三位数 |
您所在的位置:网站首页 › c 逆序输出数字是什么 › c语言实战 逆序一个三位数 |
题目:给定一个正的三位整数,比如123,输出321,但如果是700,输出必须是7不能是007 思路是怎么样的呢? 假设这个正三位数是m,它的百分位是c,十分位是b,个位是a,那么就存在下面的等式。 m=c*100+b*10+a*1 现在已知了m,只要知道c、b、a这三个数的值,那么我们直接按abc的顺序输出不就给逆序了吗? 那么怎么知道这三个数的值呢? 首先c是最好求的 c=m/100 //整除的结果就是百位数 利用相似的思路b的值也比较好求。 b=(m%100)/10 //m对100取余之后剩下的就是十位数和个位数的和,和在整除10就是十位数了。 一个等式三个未知数,知道了其中两个,那么第三个就知道了。 a=m-c*100-b*10 恩,解决了啊,写程序。 int m = 0; int a = 0; int b = 0; int c = 0; scanf_s("%d",&m); c = m / 100; b = (m % 100) / 10; a = m - (c*100)-(b*10); printf("%d%d%d",a,b,c);
运行之后,发现没有什么大问题,只是针对700这种情况,输出的还是007,怎么办?怎么办,很急,我一开始还想利用字符输出的,程序崩溃了,没成功。后来一想,既然已经知道了三个位置的数值了,那么直接三个位置的数加一下就行了嘛,反正结果没变,比如输入700,那么c等于7 b等于0 a等于0,那么逆序之后的这个数不就是0*100+b*10+c*1,那么结果不就是7嘛, 最后改成这样就可以了。 int m = 0; int a = 0; int b = 0; int c = 0; scanf_s("%d",&m); c = m / 100; b = (m % 100) / 10; a = m - (c*100)-(b*10); printf("%d",a*100+b*10+c);
2018.9.13更新 温故而知新,又写了一遍。 int main() { //用来保存用户输入的数据 int input = 0; //用来保存提取出来的三个位置的数据 int gewei = 0; int shiwei = 0; int baiwei = 0; //用来保存最后输出的那个三位数 int output = 0; scanf_s("%d",&input); gewei = input % 10; shiwei = (input % 100) / 10; baiwei = input / 100; output = gewei * 100 + shiwei * 10 + baiwei * 1; printf("%d",output); }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |